package tables

const (
	VaProtocolForRDP = "rdp"
	VaProtocolForSSH = "ssh"
	VaProtocolForVNC = "vnc"

	VaSessionStatusForCreate        = 1 // 创建
	VaSessionStatusForInit          = 2 // 创建但是还未完成初始化连接
	VaSessionStatusForBindWinId     = 3 // ws 连接连接时更新会话状态
	VaSessionStatusForWsBreak       = 4 // ws断开,但是tunnel还握着
	VaSessionStatusForWinBreak      = 5 // win session 断开，这是不应该出现的一个状态
	VaSessionStatusForWinDestroying = 6 // 通知win session 准备开始注销
	VaSessionStatusForWinDestroyed  = 7 // 完成注销，会话彻底结束

	VaSessionHoldForHolding = 1 // 1-握持中，可以被管理；
	VaSessionHoldForHeld    = 2 // 2-结束握持,不能被管理,Held 是 hold的过去式和过去分词
	VaSessionHoldForInit    = 3 // 3-还未开始，会话还未开始

)

type VapSession struct {
	Id               int64  `json:"id,string" gorm:"primary_key"` // 主键
	Protocol         string `json:"protocol"`                     // 连接协议,可选 rdp vnc ssh
	HostId           int64  `json:"hostId,string"`
	HostIp           string `json:"hostIp"`                  // 目标主机的ip，
	ConnectPort      int    `json:"connectPort"`             // 目标主机的连接端口
	ConnectionId     string `json:"connectionId"`            // 连接ID，由客户端生成
	WinAccount       string `json:"winAccount"`              // win 账户，认证时会使用
	WinPwd           string `json:"winPwd"`                  // win 密码
	WinSessionId     int    `json:"winSessionId"`            // win 会话ID
	Width            string `json:"width"`                   // 显示屏幕宽度
	Height           string `json:"height"`                  // 显示高度
	Status           int    `json:"status"`                  // 会话状态 。
	HoldStatus       int    `json:"holdStatus"`              // 会话握持状态，1-握持中，可以被管理；2-结束握持；3-还未开始
	Message          string `json:"message"`                 // 会话备注信息
	ConnectedTime    int64  `json:"connectedTime,string"`    // 连接时间，也就是更新为using的时间，在ws握手后更新
	DisconnectedTime int64  `json:"disconnectedTime,string"` // 会话断开(注销)的时间，断开、注销 都需要更新这个值
	UserId           int64  `json:"userId,string"`           // 创建者ID
	ClusterId        int64  `json:"clusterId,string"`
	AutoCreateInfo
}

func (r *VapSession) TableName() string {
	return "vap_session"
}
